home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 December / Australian PC User - December 2003 (CD2).iso / software / apps / files / dwmx2k4.exe / Disk1 / data1.cab / Configuration_En / Commands / ExportAsWAR.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  8.7 KB  |  286 lines

  1.  
  2. // Copyright 2000, 2001, 2002, 2003 Macromedia, Inc. All rights reserved.
  3.  
  4. //*************************API**************************
  5.  
  6. function commandButtons()
  7. {
  8.     return new Array(MM.BTN_OK,  "okClicked()",
  9.                    MM.BTN_Cancel,"cancelClicked()",
  10.                    MM.BTN_Help,  "displayHelp()")
  11. }
  12.  
  13. var helpDoc = MM.HELP_exportAsWAR;
  14.  
  15.  
  16. //*******************LOCAL FUNCTIONS*********************
  17.  
  18.  
  19. function initializeUI()
  20. {
  21.     var warName = "";
  22.     var includeJSP = "true";
  23.     var siteHandle = MMNotes.open(dw.getSiteRoot(), false);
  24.     if (siteHandle) 
  25.     {
  26.         warName = MMNotes.get(siteHandle, "warFile");
  27.         includeJSP = MMNotes.get(siteHandle, "includeJSP");
  28.         MMNotes.close(siteHandle);
  29.     }
  30.     document.forms[0].warName.value = warName;
  31.     document.forms[0].includeJSPs.checked = eval(includeJSP);
  32. }
  33.  
  34. function cancelClicked(){
  35.    window.close();
  36. }
  37.  
  38. function Preferences_getJavaJSP() {
  39.   var JavaJSP = new Array();
  40.   JavaJSP.javaHome = dw.getPreferenceString("Java/JSP Preferences", "Java/JDK home", "");
  41.   JavaJSP.jarArchiver = dw.getPreferenceString("Java/JSP Preferences", "Java Archiver", "");
  42.   JavaJSP.javaCompiler = dw.getPreferenceString("Java/JSP Preferences", "Java Compiler", "");
  43.   JavaJSP.jspCompiler = dw.getPreferenceString("Java/JSP Preferences", "JSP Compiler", "");
  44.   JavaJSP.Template = new Array();
  45.   JavaJSP.Template.warArchiver = dw.getPreferenceString("Java/JSP Preferences", ".war Archiver", "");
  46.   JavaJSP.Template.javaCompiler = dw.getPreferenceString("Java/JSP Preferences", ".java Compiler", "");
  47.   JavaJSP.Template.jspCompiler = dw.getPreferenceString("Java/JSP Preferences", ".jsp Compiler", "");
  48.  
  49.   return JavaJSP;
  50. }
  51.  
  52. function Site_getSourceFolders() {
  53.   var root = dw.getSiteRoot();
  54.   var jspSource = ""
  55.   var javaSource = "";
  56.   if (DWfile.exists(root + "\\Web-INF\\Jsp")) {
  57.     jspSource = "WEB-INF/jsp";
  58.   }
  59.   if (DWfile.exists(root + "\\Web-INF\\src")) {
  60.     javaSource = "WEB-INF/src";
  61.   }
  62.   var source = new Array();
  63.   source.jsp = MMNotes.localURLToFilePath(root + jspSource);
  64.   source.java = MMNotes.localURLToFilePath(root + javaSource);
  65.  
  66.   return source;
  67. }
  68.  
  69. function browseFolder() {
  70.   var warPath = dw.browseForFileURL('save', 'Export As', 'false', 'true', 'WAR files|*.war');
  71.   if (warPath != "")
  72.   {
  73.     document.forms[0].warName.value = MMNotes.localURLToFilePath(warPath);
  74.   }
  75. }
  76.  
  77. function saveWarOptions(warName, includeJSP) {
  78.   var siteHandle = MMNotes.open(dw.getSiteRoot(), true);
  79.   if (siteHandle) 
  80.   {
  81.     MMNotes.set(siteHandle, "warFile", warName);
  82.     MMNotes.set(siteHandle, "includeJSP", includeJSP);
  83.     MMNotes.close(siteHandle);
  84.   }
  85. }
  86.  
  87. function archiveFile(file, includeJSP) {
  88.   var result = true;
  89.   var index = file.lastIndexOf(".");
  90.   if (index >= 0) {
  91.     var extension = file.substr(index).toLowerCase();
  92.     if (extension == ".java" || (extension == ".jsp" && !includeJSP) || extension == ".lck") {
  93.       result = false;
  94.     }
  95.   }
  96.  
  97.   return result;
  98. }
  99.  
  100. function archiveDirectory(directory, includeJSP) {
  101. // directory is relative to the site root
  102. // URL is the URL of the site root
  103.   var result = true;
  104.   if (directory.toLowerCase() == "_notes" || directory.toLowerCase() == "_mmserverscripts") {
  105.     result = false;
  106.   } else {
  107.     var URL = dw.getSiteRoot() + directory;
  108.     var localPath = MMNotes.localURLToFilePath(URL);
  109.     var source = Site_getSourceFolders();
  110.     if (localPath == source.java || (localPath == source.jsp && !includeJSP)) {
  111.       result = false;
  112.     }
  113.   }
  114.  
  115.   return result;
  116. }
  117.  
  118. function Site_getFiles(directory, bAppendRootFolder) {
  119. // directory is relative to the site root
  120.   var files = "";
  121.   var nextDirectory = "";
  122.   var currFolder = dw.getSiteRoot();
  123.   if (directory != "") {
  124.     currFolder = currFolder + directory + "/";
  125.     nextDirectory = directory + "/";
  126.   }
  127.   var includeJSP = document.forms[0].includeJSPs.checked;
  128.   var directories = DWfile.listFolder(currFolder, "directories");
  129.   if (directories) {
  130.     var len = directories.length;
  131.     var i;
  132.     for (i=0; i < len; i++)
  133.     {
  134.       var nextDir = nextDirectory + directories[i];
  135.       if (archiveDirectory(nextDir, includeJSP)) {
  136.         files += Site_getFiles(nextDir, bAppendRootFolder);
  137.       }
  138.     }
  139.   }
  140.   var siteFiles = DWfile.listFolder(currFolder, "files");
  141.   if (siteFiles) {
  142.       var siteName = "";
  143.     if (bAppendRootFolder) {
  144.      siteName = dw.getSiteRoot();
  145.      siteName = siteName.substring(0, siteName.lastIndexOf("/"));
  146.      siteName = siteName.substr(siteName.lastIndexOf("/") + 1) + "/";
  147.     }
  148.     var len = siteFiles.length;
  149.     var i;
  150.     for (i = 0; i < len; i++) {
  151.       if (archiveFile(siteFiles[i], includeJSP)) {
  152.         files = files + '\r\n"' + siteName + nextDirectory + siteFiles[i] + '"';
  153.       }
  154.     }
  155.   }
  156.  
  157.   return files;
  158. }
  159.   
  160. function buildArguments(commandTemplate, jar, name, files) {
  161.   var command = commandTemplate;
  162.   command = command.replace(/\$\$\{Jar\}/gi, jar);
  163.   command = command.replace(/\$\$\{Name\}/gi, name);
  164.   command = command.replace(/\$\$\{Files\}/gi, files);
  165.  
  166.   return command;
  167. }
  168.  
  169. function generateTempFileName() {
  170.   return "fileList";
  171. }
  172.  
  173. function okClicked()
  174. {
  175.     var warName = document.forms[0].warName.value;
  176.     var includeJSP = document.forms[0].includeJSPs.checked;
  177.     var JavaJSP = Preferences_getJavaJSP();
  178.     if (exportSiteAsWAR(warName, includeJSP, JavaJSP.jarArchiver, JavaJSP.Template.warArchiver)) {
  179.         window.close();
  180.     }
  181. }
  182.  
  183. function exportSiteAsWAR(warName, includeJSP, jarArchiver, warArchiver)
  184. {
  185.     var success = true;
  186.     if (warName.length)
  187.     {
  188.         var index = warName.lastIndexOf(":");
  189.         var warFileName = warName.substr(index + 1);
  190.         var removeFile = false;
  191.         var path = dw.getConfigurationPath() + "/WAR/";
  192.         // save path as a sitewide note for default Export as
  193.         saveWarOptions(warName, includeJSP);
  194.         if (jarArchiver != "" && DWfile.exists(jarArchiver)) {
  195.           if(navigator.platform.charAt(0) != "M") { // Windows
  196.               var files = Site_getFiles("", false); // recursive function
  197.               var tempFile = generateTempFileName();
  198.               if (!DWfile.exists(path)) {
  199.                 if (!DWfile.createFolder(path)) {
  200.                     alert(MSG_ErrorWARFolder)
  201.                     return false;
  202.                 }
  203.               }
  204.               path += tempFile;
  205.               if (DWfile.write(path, files)) { // overwrite
  206.                 var arguments = buildArguments(warArchiver, "", warName, "@" + MMNotes.localURLToFilePath(path));
  207.                 MM.shellExecute(jarArchiver, arguments, MMNotes.localURLToFilePath(dw.getSiteRoot()));
  208.               }
  209.               else {
  210.                     alert(MSG_ErrorWARResponse)
  211.                     return false;                
  212.               }
  213.           }
  214.           else
  215.           {
  216.              // copy java archiver to the folder above the site root (jar utility requires site to be in same directory as the JAR utitlity)
  217.             var srcFile = jarArchiver;
  218.             srcFile = MMNotes.filePathToLocalURL(srcFile);
  219.             var destFile = dw.getSiteRoot();
  220.             destFile = destFile.substr(0, destFile.length - 1); // trim trailing '/'
  221.             var index = destFile.lastIndexOf("/");
  222.             destFile = destFile.substring(0, index); // trim to parent directory excluding '/'
  223.             path = destFile + "/"; // path is the directory of the Jar and temp WAR
  224.             destFile += srcFile.substring(srcFile.lastIndexOf("/"));
  225.             if (!DWfile.exists(destFile)) {
  226.                 if (DWfile.copy(jarArchiver, destFile)) {
  227.                     removeFile = true;
  228.                 }
  229.                 else {
  230.                     alert(MSG_ErrorCopy + jarArchiver + MSG_ErrorCopyTo + destFile);
  231.                     return false;
  232.                 }
  233.             }
  234.             var script;
  235.             script = DWfile.read(dw.getConfigurationPath() + "/WAR/jarscript");
  236.             if (script) {
  237.                 script = script.replace(/\$\$\{Jar\}/ig, MMNotes.localURLToFilePath(destFile));
  238.                 script = script.replace(/\$\$\{Name\}/ig, warFileName);
  239.                 var files = Site_getFiles("", true);
  240.                 files = files.replace(/\r\n/g, ",");
  241.                 script = script.replace(/\$\$\{Files\}/ig, files);                        
  242.                 dw.runAppleScript(script);
  243.                 if (DWfile.exists(path + warFileName)) {
  244.                     if (DWfile.copy(path + warFileName, warName)) {
  245.                         if (!DWfile.remove(path + warFileName)) {
  246.                             //alert("Warning: Could not remove temporary file:" + path + warFileName);
  247.                             //success = false;    
  248.                         }
  249.                     }
  250.                     else {
  251.                         //alert("Warning: Could not copy WAR file:\n" + path + warFileName + "\nto destination:\n" + warName);
  252.                         success = false;    
  253.                     }
  254.                 }
  255.                 else {
  256.                     //alert(MSG_ErrorCreateWar + warName);
  257.                     success = false;    
  258.                 }
  259.             }
  260.             else {
  261.                 alert(MSG_ErrorLocateAppleScript + dw.getConfigurationPath() + "/WAR/jarscript");
  262.                 success = false;    
  263.             }
  264.             if (removeFile) {
  265.                 if (!DWfile.remove(destFile)) {
  266.                     //alert("Warning: Could not remove temporary file:" + destFile);
  267.                     //success = false;    
  268.                 }
  269.             }
  270.           }
  271.         }
  272.         else {
  273.             // offer redirect to Preference dialog
  274.             alert(MSG_SpecifyArchiverFile);
  275.             success = false;
  276.         }
  277.     }    
  278.     else {
  279.         // offer redirect to Preference dialog
  280.         alert(MSG_SpecifyPath);
  281.         success = false;
  282.     }
  283.  
  284.     return success;
  285. }
  286.